package tec;

class TestPassagerStresse
    extends TestPassagerAbstrait{

    void lancerTestPassagerStresse() throws TecInvalidException{
	int nbTest = 9;
	super.lancerTestPassagerAbstrait();
	
	testChoixChangerPlace();
	System.out.print('.');nbTest++;

	testChoixPlaceMontee();
	System.out.print('.');nbTest++;

	System.out.println("(" + nbTest + "):OK: " + getClass().getName());
	
    }

    void testChoixChangerPlace(){
	//Si bus ASSIS, ne pourra pas se lever
	//Si bus DEBOUT, ne poura pas s'asseoir
	
	Passager p1 = new PassagerStresse("Marc", 5);
	FauxBus busAssisDebout = new FauxBus();
	busAssisDebout.status = FauxBus.ASSISDEBOUT;
	
	p1.accepterPlaceDebout();
	p1.nouvelArret(busAssisDebout, 3);
	assert 0 == busAssisDebout.messages.size() : "debout-> rien ne se passe";

	
	Passager p2 = new PassagerStresse("Marc", 5);
	FauxBus busAssisDebout2 = new FauxBus();
	busAssisDebout2.status = FauxBus.ASSISDEBOUT;

	p2.accepterPlaceAssise();	
	p2.nouvelArret(busAssisDebout2, 1);
	assert 0 == busAssisDebout2.messages.size() : "assis à plus de 3 arrêts -> rien ne se passe";
	p2.nouvelArret(busAssisDebout2, 3);
	assert "demanderChangerEnDebout" == busAssisDebout2.messages.getLast() : "assis à moins de 3 arrêts -> passage en debout"; 

	
	
	
    }

    void testChoixPlaceMontee() throws TecInvalidException{
	
	Passager passager1 = new PassagerStresse("Marc", 5);
	FauxBus busDebout = new FauxBus();
	busDebout.status = FauxBus.DEBOUT;
	passager1.monterDans(busDebout); //Il ne voudra pas monter car le bus n'a que des places debouts.
	assert 1 == busDebout.messages.size() : "bus DEBOUT";

	Passager passager2 = new PassagerStresse("Marc", 5);
	FauxBus busAssisDebout = new FauxBus();
	busAssisDebout.status = FauxBus.ASSISDEBOUT;
	passager2.monterDans(busAssisDebout);
	assert "demanderPlaceAssise" == busAssisDebout.messages.getLast() : "bus ASSISDEBOUT";

	Passager passager3 = new PassagerStresse("Marc", 5);
	FauxBus busAssis = new FauxBus();
	busAssis.status = FauxBus.ASSIS;
	passager3.monterDans(busAssis);
	assert "demanderPlaceAssise" == busAssis.messages.getLast() : "bus ASSIS";

	Passager passager4 = new PassagerStresse("Marc", 5);
	FauxBus busPlein = new FauxBus();
	busPlein.status = FauxBus.PLEIN;
	passager4.monterDans(busPlein);
	assert 1 == busPlein.messages.size() : "bus PLEIN";
    }

    public PassagerAbstrait creerPassager(String nom, int destination){
	PassagerAbstrait passager = new PassagerStresse(nom, destination);
	return passager;
    }
}